home *** CD-ROM | disk | FTP | other *** search
/ Gamers Delight 2 / Gamers Delight 2.iso / Aminet / game / role / haktar.lha / Haktar / Haktar.doc next >
Text File  |  1992-05-14  |  43KB  |  939 lines

  1. Haktar V1.6
  2. (C) by Guido Wegener Mar.1992
  3.        Eisenacher Str. 2
  4. °ª°    5300 Bonn 1
  5.        West Germany
  6.  
  7. This program is Freeware and may only be copied on an unchanched disc of
  8. the series mentioned when Haktar starts.
  9. If you want to sell it on your own discs, then please ask me for a special
  10. version for you. Please inform me about the copyrights, prices etc. of
  11. your series.
  12. Haktar uses the ARP.library and was written using Aztec C 5.0b.
  13.  
  14. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  15.  
  16. Request :
  17. Haktar was written to entertain, and it would be very nice if you'd write
  18. some cute adventures and then send them to me. You will get the disk back
  19. with some of the other adventures I received from all over the world. Please
  20. list the languages you are able to understand. It would be very friendly
  21. (and will improve your chances of getting a fast answer) if you would
  22. send some money (for postage (and some beers)).
  23. Oh, look at this UGLY .doc-file ! My English is so bad und the structure is
  24. so chaotic ! I am sure that you could write a better one ! Yeah, become a
  25. hero of the scene ! Write a good manual for Haktar ! Send it to me ! Oh Boy ! 
  26. You are soooooooooooooooooooooooooooooooooo kind !
  27. I know that I ask a lot of you to do, but I did an awful lot of work for
  28. Haktar and would be glad to know that there are some guys out there who
  29. are using it.
  30. Please spread the whole package. The more people are testing it, the more
  31. improvements will be made. And we all do want that perfect proggy, don't we ?
  32.  
  33. °ª° THANKS °ª°
  34.  
  35. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  36.  
  37. About Haktar :
  38. About a year ago I started to read H.P.Lovecraft's books. I started with
  39. 'The Case of Charles Dexter Ward'. When that good guy investigated the
  40. giant cave under Joseph Curwen's house, I was fascinated and thought
  41. about ways to explore such dungeons in the computer. Since I once wrote
  42. some C-64-Basic adventures and had thought about such problems before,
  43. it did not take long until I had the first ideas for it. But how should
  44. I manage the parser ? A good parser for an adventure construction kit is
  45. very hard to program, isn't it ? I gave up...
  46. Some days later I bought 'Dungeon Quest', a primitive and cheap, but
  47. somewhat cute, adventure. One time I was standing in front of a little hut.
  48. I wanted to enter it, or at least to read the message at the door, but
  49. for doing so I had to try about 10 commands until the parser understood what
  50. I meant. That day the first complete concept for Haktar was born :
  51. - everything you can do is displayed on the screen
  52. - each item or room is one DOS-file
  53. - these files are simple ASCII text files
  54. - these texts consist of some simple commands
  55. - according to your inputs, Haktar is jumping from file to file
  56.  
  57. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  58.  
  59. About The Name :
  60. Some time ago Douglas Adams wrote 'The Hitch Hiker's Guide to the Galaxy'.
  61. It was a real success and he wrote three more books on the subject.
  62. One of the books is called 'Life, the Universe and Everything'.
  63. In this book there is a giant computer that was destroyed because of a
  64. failure. But the particles of the computer were still communicating with each
  65. other and the crippled computer floated through space. He was still able to
  66. create illusions and some real things. His name was 'Hactar' (or Haktar in
  67. the German translation of the book).
  68. "It was thin and feeble, like a voice carried on the wind from a great
  69. distance, half heard, a memory or a dream of a voice."
  70. "'I have nothing to offer you by way of hospitality,' said Hactar faintly,
  71. 'but tricks of the light. It is possible to be comfortable with tricks of
  72. light, though, if that is all you have.' His voice evanesced, and in the dark
  73. dust a long velvet paisley-covered sofa coalesced into hazy shape."
  74. "I can encourage and suggest tiny pieces of space debris - the odd minute
  75. meteor, a few molecules here, a few hydrogen atoms there - to move together."
  76.  
  77. When I was thinking about the name for this program, I remebered this
  78. computer and thought that the name would fit : I wrote Haktar to create
  79. new worlds.
  80.  
  81. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  82.  
  83. Structure Of An Adventure :
  84. The key to an adventure is the head-file.
  85.  In this file there are the initial commands.
  86.  You must give a headpath here.
  87.  You may set the time.
  88.  You may set the maximum weight.
  89.  You may set some initial flags and variables.
  90.  You should declare files that contain thing-commands.
  91.  You may create some items in the hero's pocket.
  92.  You should print some introducing words for the user.
  93.  You MUST use a go-command to mark the first room.
  94. Every room is a single DOS-file.
  95.  There you can list the items that are in there, and the things the hero
  96.  can do there.
  97. Every item is a DOS-file, too.
  98.  Here you can only list the things the hero can do with it.
  99.  
  100. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  101.  
  102. How To Start Haktar :
  103. Type 'Haktar <headfile>' in the CLI.
  104. <headfile> is the full name of the head-file of your adventure.
  105. OR : Click its icon. But there still may be some problems with the WBstart.
  106. It is very wise to use an addbuffers on the drive you are using, this will
  107. prevent Haktar from loading the same file several times.
  108. Addbuffers 50  is a good command for medium size adventures.
  109.  
  110. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  111.  
  112. The Userinterface :
  113. The Interface consists of the following groups of elements :
  114. A menu (right mouse button)
  115. B list gadgets (that upper half of the screen with the prop-gadget)
  116. C control gadgets (the six boolean gadgets in the middle)
  117. D text output
  118.  
  119. A:a:Project :
  120.    1 Restart
  121.      The adventure you were playing is started again. You will not have to
  122.      type the filename again.
  123.    2 Start...
  124.      A file requester will appear. Choose the headfile of an adventure.
  125.      My own adventures are marked by the .hhf (Haktar header file)  extension,
  126.      but do not count on that when dealing with other adventures.
  127.      The chosen adventure will be started.
  128.    3 Load...
  129.      After saving the game (Aa4) you can restart it by entering the name of
  130.      the file here. After loading you will have to click on C1,2 or 3.
  131.    4 Save...
  132.      Save your position in the adventure.
  133.    5 About...
  134.      You know this.
  135.    6 Crap
  136.      Ey, just crap, ey, you know, small-talk, isn't it, or what ?
  137.    7 Short Instructions
  138.      A VERY short guide to the secrets of Haktar.
  139.    8 Quit
  140.      It does not look like the close gadget but it works exactly the same.
  141.   b:System :
  142.    1 Headpath :
  143.      After copying an adventure to another device it is neccessary to change
  144.      the headpath command in the headfile. For testing you can also set the
  145.      new headpath with this option and all following headpath-commands will
  146.      be ignored. I do not know why I included this option, but some months
  147.      ago I thought that it was important...
  148.    2 Restore Headpath
  149.      After changing the headpath (Ab2) you can restore the real headpath with
  150.      this option.
  151. B: 1 the big big list
  152.      When you have to choose what to do, you have to click on one of the
  153.      actions or things listed here. When the time is right, you can choose
  154.      different lists by clicking C1-3. And you may scroll through long lists
  155.      by using B2-4.
  156.    2 the long proportional gadget
  157.      Move the bar to scroll through lists.
  158.    3 arrow up
  159.      Scroll up one entry.
  160.    4 arrow down
  161.      Scroll down again.
  162. C: 1 Room
  163.      By clicking this gadget you can get a list of all the possible actions
  164.      in the room you are in. In most cases you can find something to leave
  165.      the room here. Choose one and see what happens.
  166.      For profis : All do-commands of the room file are displayed.
  167.      This list will also appear every time you enter a new room.
  168.    2 Items
  169.      Click here to get a list of the items in the room. Click one of the
  170.      displayed items to see what you can do with that specific item. Click
  171.      one of the displayed actions and it will be executed.
  172.      Do not forget to use this gadget when entering a new room! If you don't,
  173.      you may overlook some important items.
  174.    3 Inventory
  175.      All items you are holding will be displayed. You may then choose what
  176.      to do with a chosen item, just like C2.
  177.    4,5 Continue, Ok
  178.      This gadgets are dead in this version.
  179.      But you can use the (especially the Continue) to scroll a page of text.
  180.    6 Cancel
  181.      You can use this gadget to forbid the waiting when showing a text.
  182.      This will speed it up, but you will still be able to pause by pressing
  183.      the right mouse button.
  184.      To stop all output, press the close gadget once. Note that Haktar has to
  185.      read through the whole file, even after pressing close; so please wait
  186.      until it is ready.
  187. D: In the text window all messages and descriptions will be displayed.
  188.    After each move the name of the room you are in will be displayed here to
  189.    mark the paragraphs.
  190.    When reading texts that are too long for the window, a red arrow will
  191.    appear in the right corner of the window. Click on the text or C4 for
  192.    continue. You may also press any (real==undead) key or the right mouse
  193.    button or any other gadget (except Cancel and close).
  194.  
  195. You can also use keys to activate the gadget functions :
  196. Key                           Gadget
  197.  r                              C1
  198.  i or <Space>                   C2
  199.  n                              C3
  200.  u                              B3
  201.  d                              B4
  202.  1-9                            B1
  203.  
  204. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  205.  
  206. Haktar Commands :
  207. Haktar's commands consist of their name and some (or none) arguments.
  208. There are three groups of arguments :
  209. short  name           stop chars
  210.  I    integer number  <return>·[] |,abcdef....
  211.  W    word            <return>·[] |,
  212.  N    name            <return>·[]|,
  213.  S    string          <return>·
  214.  B    block           []
  215.  BB   double block    [|]
  216. - Stop chars are the chars that mark the end of an argument.
  217. - No argument except B and BB may be longer than 80 characters !
  218. - Arguments that have to be displayed as text must not be longer than 79
  219.   characters, while arguments that will be listed as choices have a limit of
  220.   77 characters. When dealing with pure ASCII files that are to be printed
  221.   via printfile, you should use my WordWrap utility. This small tool should
  222.   be on this disk, too. But Fred Fish will probably have killed it.
  223. - The arguments may not be complex in any way, they are not parsed. Haktar
  224.   reads them as they are and does not do much thinking.
  225. - When using some of the commands, it is neccessary to tell Haktar about the
  226.   name of a room. You may type simply type the name of a room that you have
  227.   created or INV or ACTROOM.
  228.  -You may use the name INV instead of a real room name to refer to the hero's
  229.   hands and pockets. This means the things that the hero is carrying.
  230.   Instead of INV, you may also use an empty argument, but this is unclean.
  231.  -You may refer to the room the hero is in by ACTROOM, or in an unclean way
  232.   by ¡.
  233. - Leading spaces in all arguments except strings are deleted.
  234. - All spaces at the end of anything will be killed, too.
  235. - Words are not used yet, but maybe I will need them later. In this version
  236.   are implemented for internal use only.
  237. - Blocks are very special arguments, they consist of some (or none) additional
  238.   Haktar commands. Simple blocks must be enclosed by [ and ]. Double blocks
  239.   have to start with [. The second block has to start with | and ends with ].
  240.   These double blocks are used in if-statements, where the first block
  241.   expresses the TRUE (or positive) block and the second block contains the
  242.   FALSE (or negative) block. The TRUE block will be executed if the
  243.   if-statement is true. In all other cases the FALSE block will be executed.
  244.   It works something like IF THEN ELSE.
  245. - If a double block is needed, you have to give BOTH blocks. Each of them may
  246.   be empty to express that you do not want anything to be executed here.
  247.   This is also true for simple blocks.
  248.   So you will have to use the [] or [|] characters to avoid ugly results.
  249. - To build an or-constructions with if commands, you may write several ifs in
  250.   one line, seperated by commas. You may then use only one double block for
  251.   all if-commands of that line. This will be executed if any of the previous
  252.   ifs was true.
  253.  
  254. ATTENTION, your attention please !
  255.           You may not, never and not at all use characters like [ or ] or |
  256.           in any other place or sense than as blocking parantheses.
  257.           In other words : Do not place []| in rems, prints, names, vars,
  258.           flags, doscalls, filenames, etc.
  259.           But you must use them after EACH and EVERY do, choose, thing or
  260.           if !
  261.  
  262. The following descriptions consist of the command name and the format of
  263. its arguments : First there is a character to express the argument type.
  264. This is followed by something like <flag>. This has to be replaced by the
  265. real argument. The type and the <> chars do not belong to the argument.
  266. All commands may be written in any way : BIG, small or SOmeWAy.
  267. There may come a time when you do not want the full name of a room or item
  268. to be displayed. You can hide parts of these names by placing a § at the start
  269. and a the end of the part that is to be hidden. This is usefull when dealing
  270. with mazes or other things that look the same, but work differently.
  271. In the tradition of the C-64 Basic, you can use abbreviations for most of the
  272. commands. The ? is quite cute and some of the others may proove usefull in
  273. extreme circumstances. Somewhere below, there is a list of them.
  274.  
  275. do N<action> B<block of commands>
  276. Several of these commands should be in every room/item-file.
  277. When the user selects the room/item, all do-commands in this file will be
  278. read and the <action> strings will be displayed in the list. The user chooses
  279. one of them and its <block of commands> will be executed.
  280. This is the heart and core of Haktar, you can do without it, but not well.
  281. Do not place normal commands outside a do-command and do not place a do-
  282. command into another do-command.
  283.  
  284. items N<item> N<item> ....
  285. Haktar needs a list of all the items lying in each room (How could he know ?).
  286. Place one of these commands in every room and list the items that are in it.
  287. For reasons of style you can use several items-commands in one file.
  288. Do not hide items-commands in if-statements. When the first reference to a
  289. room occurs, Haktar will read its file and remembers the items listed. It will
  290. never again look at the items-commands of that file. If you want to add items
  291. to a room, then the create-command is the only legal way.
  292.  
  293. move N<item> N<source> N<destination>
  294. Moves the <item> from room <source> to the room <destination>.
  295. If the item cannot be found in <source>, it will be created in <destination>.
  296. The move-command works like :
  297.   gone <item> <source>
  298.   create <item> destination>
  299.  
  300. create N<item> N<room>
  301. Creates the <item> in the <room> out of thin air. You may create more than one
  302. item of a type (=name), but this will lead to some troubles when using the
  303. handle-command.
  304. Be sure that the create-commands are at the right spot. A friend of mine had
  305. some ugly results when putting the creates into the wrong if-statement.
  306. Note that this version of Haktar puts new items at the beginning of the lists.
  307. This is good, because the user will see these changes first. But it could
  308. mess up the order in your lists.
  309.  
  310. gone N<item> N<room>
  311. The <item> in the <room> will be deleted/killed/get lost/annihilated/
  312. destroyed forever. (You can create it again).
  313. If you do not know where the item is, you may use the INVACT room name. Haktar
  314. will try to kill the item in the inventory list and, if it was not there, in
  315. the current room.
  316.  
  317. choose N<action> B<block of commands>
  318. This command works like the do-command. While do-commands may not be placed
  319. within other do-commands, this command may ONLY be placed there.
  320. If you use choose, you will also have to place a startchoose at the start of
  321. a group of choose-commands, and an endchoose at its end.
  322. You may place a choose-block inside another's <block of commands>. There is
  323. a limit of 10 choose-commands inside each other.
  324. Do not use several choose-blocks AFTER each other.
  325.  
  326. startchoose
  327. Marks the start of a group of choose-commands.
  328.  
  329. endchoose
  330. Marks the end of a group of choose-commands.
  331.  
  332. setflag N<flag>
  333. The <flag> will be set.
  334.  
  335. delflag N<flag>
  336. The <flag> is deleted.
  337.  
  338. setvar N<var> I<value>
  339. The Variable <var> will be created and set to the <value>. <value> is a simple
  340. CONSTANT.
  341. Variables can only hold integer values. Negative values are allowed.
  342. Variables use more memory than flags and cannot be deleted.
  343. So please use flags where it is possible.
  344.  
  345. addvar N<var> I<value>
  346. The <value> is added to the Variable <var>. If the variable was not set upto
  347. now (it has no value), it will be set to <value>.
  348. To decrease <var>, you may use negative <value>s.
  349.  
  350. print S<text>
  351. Prints the <text> on the screen. Please use it as often as possible.
  352. Before the text is scrolled out of view by following lines, Haktar will call
  353. the wait-command.
  354.  
  355. cprint S<text>
  356. Like print, but the text is centred.
  357.  
  358. printvar N<intro> N<var> N<ending>
  359. This prints the value of a <var>iable between the texts <intro> and <ending>.
  360. You may not use commas in these texts.
  361.  
  362. wait
  363. This command waits for the user to click on the text-window.
  364. It can be used to split the output into sane passages, preventing Haktar from
  365. doing it himself (and, boy, is he cruel !).
  366.  
  367. noautowait
  368. Switch off all automatic waits. This will work like clicking on the Cancel
  369. gadget, except that wait-commands will still do their duty.
  370.  
  371. locoff
  372. Normally the current location of the hero is displayed in the text window
  373. AND the title bar. If you use simpleface, the graphics in the title bar will
  374. be deleted every move. To prevent this, you can switch off the display in
  375. the title bar.
  376. BUGS: locoff does not prevent the destruction of the title bar when
  377.       reactivating the window. I hope that I can change that later.
  378.  
  379. locon
  380. From now on the current location will be displayed in the title bar again.
  381.  
  382. getphrase S<get text>
  383. If you want to make life easier by using the handle-command (see below),
  384. you must use this and the following two commands before (best in the head-
  385. file). This one lets you give a text that will be used in the list of
  386. choices for the user. Please refer to the handle-command.
  387. Here and in the following two commands, the use of a § expresses that you
  388. want Haktar to replace the char by the name of the item the handle is in.
  389.  
  390. dropphrase S<drop text>
  391. This command defines the text that is used to express the possibility of
  392. dropping an item.
  393.  
  394. cantgetphrase S<too heavy text>
  395. An item may be too heavy to be taken by the hero. In this case the
  396. <too heavy text> is printed.
  397.  
  398. handle I<weight>
  399. This is one of my personal goodies.
  400. It solves the get/drop problem.
  401. It works like a do-command. When Haktar finds this command, it adds the
  402. getphrase or dropphrase string, depending on if the hero already holds the
  403. item or not, to the list of do-choices. If the user selects it, the item
  404. in which the handle-command is used is taken or dropped and the <weight>
  405. of the item is added or substracted to/from the weight the hero carries.
  406. Handle is working like a block of other commands, and you may think of
  407. it as being replaced by these commands :
  408. ifitemin stone,INV
  409.  [
  410.   do drop stone
  411.    [
  412.     move stone,INV,ACTROOM
  413.     addweight -10
  414.    ]
  415.  |
  416.   do get stone
  417.    [
  418.     ifweight 10
  419.      [
  420.       print Too heavy !
  421.      |
  422.       move stone,ACTROOM,INV
  423.       addweight 10
  424.      ]
  425.    ]
  426.  ]
  427. These lines could be replaced by 'handle 10'. Short, eh ?
  428. It will only work exactly like this if the following conditions are true:
  429. - The handle is included in the file 'stone'.
  430. - You gave the following commands somewhere before :
  431.   getphrase get §
  432.   dropphrase drop §
  433.   cantdropphrase Too heavy !
  434.  
  435. headpath N<path>
  436. Haktar needs to know where all the rooms and items of your adventure are.
  437. You must tell him by using headpath.
  438. <path> is the directory where Haktar must search for the files.
  439. This command should be in your headfile !
  440. <path> must be written in normal CLI-path-format :
  441. Start with the disk's name and list the subdirectoriesin the right order
  442. to get to the directory where the files are.
  443. Examples :
  444. DF0:
  445. HaktarDisk:adventures
  446. HaktarDisk:adventures/MyRoom
  447.  
  448. multi N<file> N<file> ....
  449. By using the thing-command, you can store more than one item in a single DOS
  450. file. But Haktar needs to know which files contain these thing-commands.
  451. Use multi in the head-file and list all these files behind it.
  452.  
  453. thing N<name> B<commands>
  454. This command allows you to store several items or rooms in one file.
  455. Each item's block of <commands> is simply placed between the usual [] and put
  456. behind a thing-command. The <name> of the item or room is put directly behind
  457. the thing-command. After telling Haktar about it (multi), each thing-complex
  458. is treated exactly like a real single file with the <name>, consisting of the
  459. block of <commands>.
  460.  
  461. maxweight I<weight>
  462. You can limit the weight the hero is able to carry by setting the maximum
  463. <weight> to carry with the maxweight-command. It depends on you if you
  464. think of the weight as pounds, kg, g, Martian Grav-Meter or Vogonian Standard
  465. Towel Weight. Or you can limit the number of items, that the hero can carry,
  466. by declaring the maximum number as maxweight and giving all items the weight
  467. of 1.
  468.  
  469. addweight I<weight>
  470. Each time the hero takes an item, you may add its weight to the weight the
  471. hero carries by using addweight. The <weight> will be added to the carried
  472. weight. When an item is dropped, it is wise to use a negative <weight>.
  473.  
  474. settime I<time>
  475. The game time is set to a constant value.
  476.  
  477. addtime I<time>
  478. The <time> is added to the game time.
  479.  
  480. go N<room>
  481. The hero is moved into the <room>.
  482. This is the only way to change his position.
  483. You must use this command in the head-file to set the starting room.
  484.  
  485. input
  486. The user is to type a string. This string can be examined by an ifinput-
  487. command later.
  488.  
  489. dead
  490. This is that lovely command that cuts the rope of the 10000tons weight
  491. hanging above the hero's head. Game Over !
  492.  
  493. rem S<remark>
  494. This command will be overread. You can use it to place some comments or
  495. <remark>s in the listing.
  496.  
  497. execute N<file>
  498. The Haktar-<file> will be executed like any normal file.
  499. Often there are groups of commands that are repeated several times in an
  500. adventure. You can place this repeating commands in a DOS file and let
  501. Haktar execute this file.
  502.  
  503. doscall N<command>
  504. The <command> will be executed like a CLI-command. That command has to be
  505. in reach of DOS, that means in C: or the current directory.
  506.  
  507. eachmove N<file>
  508. Sometimes you will want to check something each move, independent of the room
  509. the hero is in. This check-commands can be placed in a DOS file and the name
  510. of this <file> can be told Haktar by this command.
  511. There can be only one file set by eachmove at any given time.
  512. When the testing becomes useless, you can use an empty <file> name to forbid
  513. the execution.
  514. BUG: In this version the <file> must be a real, seperate file. It must NOT
  515.      be part of a multi-file.
  516.  
  517. showpic N<file> I<MaxTime>
  518. The IFF/ILBM-pic <file> will be shown. The computer then waits for a mouse
  519. click.
  520. To limit the time the user is able to see the picture, you can use <MaxTime>.
  521. Haktar will show the pic for <MaxTime> frames. One second equals 50 or 60
  522. frames, depending on your type of computer (PAL or NTSC).
  523. <MaxTime>=0 will show the pic forever, until the user clicks his mouse.
  524.  
  525. showpicsub N<file> I<MaxTime>
  526. Same as showpic, but the picture will be displayed at the buttom of the
  527. screen and will remain there until it is changed by another call to
  528. showpicsub.
  529. Call showpicsub without parameters to delete any shown pic.
  530. Do not try to display pictures larger than 54 pixels.
  531. When called on NTSC, showpicsub will be handled as showpic.
  532.  
  533. simpleface N<file>
  534. The ILBM-picture <file> will be used as grafic user interface.
  535. It must be 640 pixels wide and 200 pixels heigh.
  536. These are the coordinates of the gadgets (x,y,w,h):
  537. PropDown 5,76,11,9
  538. PropUp   5,12,11,9
  539. Prop     5,23,11,51
  540. ListGad  17,13,618,8 (there are nine of this type, with y increasing at a
  541.                       rate of 8 pixels)
  542. Standard 7,91,100,9  (there are six of this type, with x increasing at a
  543.                       rate of 105 pixels)
  544. TextGad  4,106,632,81
  545.  
  546. font S<charset name>
  547. Use special font for all coming text output (lists and text window).
  548. Do not forget to add the .font extension where needed.
  549. The charset must be a standard Amiga-font in the FONT: directory. You may
  550. only use 8x8 fonts like Topaz 8. Do not use the proportional option.
  551. Create your fonts by editing the Topaz 8 with FED on your Extras disk.
  552.  
  553. printfile N<file>
  554. The ASCII <file> will be printed. It is just like using lots of prints.
  555.  
  556. sys S<code> ???
  557. There are some things that cannot be realized with the Haktar commands.
  558. These can be coded in C and put into the listing of Haktar.
  559. Please do not invent new commands, it is better to use sys.
  560. Put your routines at the right place, that is into the sys-command.
  561.  
  562. storevars N<file> N<var>...
  563. Sometimes you may want to transfer Haktar-variables to another program
  564. (for example one called by execute). In this case you can use this command
  565. to write a number a selected <var>iables to a <file>. Normally this file
  566. should be placed into the ram-disc.
  567. The file created will consist of the following entries:
  568. 1. a long integer that stores the value
  569. 2. a return-terminated string that stores the variable
  570. 3. same as 1.
  571. 4. same as 2.
  572. ...
  573. Look at a file created by this command to see how it looks like.
  574.  
  575. getvars N<file> N<var>...
  576. The variables that were stored in the file (via storevars) are read.
  577. The values on disc will be stored into the actual Haktar-variables.
  578. You may create the <file> yourself, but be sure that its format is correct.
  579. Use this command to respond to the results of files you called via execute.
  580.  
  581. ifflag N<flag> BB<blocks>
  582. If the <flag> is set, then the first block is executed.
  583. If the <flag> is FALSE, then the second block is executed.
  584.  
  585. ifvar N<var> I<low> I<high> BB<blocks>
  586. This is TRUE if the value of the variable <var> is larger than or equal to
  587. <low> and smaller or equal than <high>.
  588. Unset variables are given the value 0.
  589. If you give no <high> value, Haktar will only test if the variable is larger
  590. or equal. Please note : In this case you must place a <return> or · after
  591. <low> !!
  592.  
  593. ifitemin N<item> N<room> BB<blocks>
  594. Is TRUE if the <item> is in the <room>.
  595. You may use the term INVACT as <room>-name to express that the exact location
  596. of the item does not matter. The command is TRUE if the item is in the hero's
  597. hands or in the room he is in. It all works like the INVACT of "gone".
  598.  
  599. ifin N<room> BB<blocks>
  600. Is TRUE if the hero is in the <room>.
  601.  
  602. ifweight I<weight> BB<blocks>
  603. Is TRUE if the hero is able to hold the additional <weight>.
  604.  
  605. iftime I<low> I<high> BB<blocks>
  606. Is TRUE if the time is between <low> and <high>. (see also ifvar)
  607.  
  608. ifinput N<string> BB<blocks>
  609. Is TRUE if the user answered the last input-command with the <string>.
  610. You may check the same input more than one time.
  611.  
  612. ifchance I<percent> BB<blocks>
  613. Haktar will generate a random number between 1 and 100. ifchance is true if
  614. <percent> is smaller or equal than that number.
  615.  
  616. Too quick, too much ?
  617. Read it again !
  618. One more time !
  619. You still don't get it ?
  620. Look at the example adventure (if it is on the disk).
  621.  
  622. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  623.  
  624. For all of you out there, who got lost in this list :
  625. All commands in a sorted list :
  626. Note: Type has the following meaning:
  627.       1 : Use only in the lowest level (not in a block).
  628.       2 : Use only in the highest level (a block without anymore choose or
  629.           do commands enclosed).
  630.       3 : Use it where you like.
  631.       4 : Do not use in lowest or highest level.
  632.       Haktar reads every file several times each turn. Be carefull to prevent
  633.       sideeffects. For every time a list of choices is displayed to the user,
  634.       Haktar reads the file one time and executes all commands on lesser
  635.       levels than the one of the command that caused the displaying of the
  636.       list. You may use type 2 commands in low levels, but be carefull!
  637.       Haktar tries to execute every command no more than a single time per
  638.       turn, but has problems with this. You may print a text before using
  639.       choose, but Haktar gets crazy if you use print AND choose in another
  640.       choose-block. In other words: Be carefull...
  641.  
  642. command   abbreviations type  arguments
  643.  
  644. addtime        at        2    I<duration>
  645. addvar         av        2    N<variable> I<value>
  646. addweight      aw        2    I<weight>
  647. cantgetphrase  cgp       2    S<too heavy text>
  648. choose         c         4    S<action name> B
  649. cprint         c? , !    2    S<text>
  650. create         c         2    N<item> N<room>
  651. dead           d         2
  652. delflag        df        2    N<flag>
  653. do                       1    N<action name> B
  654. doscall        dc        2    N<CLI-command>
  655. dropphrase     dp        2    S<drop text>
  656. eachmove       em        2    N<file>
  657. endchoose      ec        4
  658. execute        e         2    N<file>
  659. font           fo        2    S<font name>
  660. getphrase      gp        2    S<get text>
  661. getvars        gv        2    N<file> N<var>...
  662. go                       2    N<room>
  663. gone           g , lost  2    N<item> N<room>
  664. handle         h         1    I<weight>
  665. headpath       hp        2    N<directory>
  666. ifchance       ic        3    I<percent> BB
  667. ifflag         if        3    N<flag> BB
  668. ifin           ii        3    N<room> BB
  669. ifinput        iinp      3    N<text> BB
  670. ifitemin       iii       3    N<item> N<room> BB
  671. iftime         it        3    I<lower limit> I<upper limit> BB
  672. ifvar          iv        3    N<variable> I<lower limit> I<upper limit> BB
  673. ifweight       iw        3    I<additional weight>
  674. input          inp       2
  675. items          i         1    N<item> NNNN...
  676. locoff         loff      2
  677. locon          lon       2
  678. maxweight      mw        2    I<weight limit>
  679. move           m         2    N<item> N<source room> N<destination room>
  680. multi          mf        2    N<file> NNNN...
  681. noautowait     naw       2
  682. print          p , ?     2    S<text>
  683. printfile      pf        2    N<text file>
  684. printvar       pv , ?v   2    N<text> N<var> N<text>
  685. rem            ;         3    S<comment>
  686. setflag        sf        2    N<flag>
  687. settime        st        2    I<Time>
  688. setvar         sv        2    N<variable> I<Value>
  689. showpic        sp        2    N<file>
  690. simpleface     sif       2    N<file>
  691. startchoose    sc        4
  692. storevars      stv       2    N<file> N<var>...
  693. sys            s         2    S<code>
  694. thing          t         1
  695. wait           w         2
  696.  
  697. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  698.  
  699. Examples :
  700. This is no adventure. It is not even a correct file. I only wanted to give
  701. some examples for the use of some commands. To get an impression of a whole
  702. adventure, look at the example.hhf adventure.
  703.  
  704. items book,ball,pen
  705.  
  706. do read book
  707.  [
  708.   addtime 10
  709.   print boring...
  710.  ]
  711.  
  712. ifitemin book,INV
  713.  [                   rem if he has the book, he can drop it
  714.   do drop book
  715.    [
  716.     move book,INV,ACTROOM    rem move book from his hands/pockets into room
  717.    ]
  718.  |
  719.   do take book      rem if he has no book, he can take it
  720.    [
  721.     move book,ACTROOM,INV    rem move book from room into pocket
  722.    ]
  723.  ]
  724.  
  725. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  726.  
  727. Advices :
  728. - You do not have to format your programs the way I did, but it looks nicer,
  729.   doesn't it ?
  730.   And H.C.F. does not always format his stuff precisely, and so there are
  731.   many bugs in his adventures. You see that it is important to keep a
  732.   certain structure to avoid errors with parantheses. Maybe I will teach
  733.   haktar to reformat your adventures in a later version.
  734. - When dealing with if-statements, you MUST use all three seperators ([|]).
  735.   If you want no positive commands use [|<negative>].
  736.   If you want no negative commands use [<positive>|].
  737. - To reduce the necessary scrolling up and down, you should place the most
  738.   needed actions and items at the top of the lists.
  739. - Since all possible actions are displayed to the user, you will have to hide
  740.   the key-actions by giving lots of choices.
  741. - Often it is wise to really hide the do-command by using an if.
  742.   This way the hero may walk through a room, not seeing that there is a
  743.   hidden switch. Later he finds a drawing, showing that there is a switch.
  744.   When he walks back into the room, the ifitemin drawing,INV is true and
  745.   the do-commands you hid there become visible.
  746. - There are people who will execute EVERY do, just to get ALL information.
  747.   That is not nice, so prevent this by using some dead-commands and by
  748.   using lots of ifs to change the course of action according to the things
  749.   the user did upto now.
  750. - Please give the user lots of informations by using lots of prints.
  751. - Haktar can be used to create adventures, but it was designed to create
  752.   a reality. The aim is not to solve the adventure, but to explore the world
  753.   and gather all informations. That does not mean that you can't write
  754.   adventures with it. You can and you may, I just wanted to suggest...
  755. - If you have enough RAM or a harddisk, you should copy the adventure to it.
  756.   Take care of the head-file :
  757.   Change the headpath statement or use assign to make it work.
  758. - Be carefull with the doscall-command. Its parameters are passed to the
  759.   Amiga-DOS without parsing. Please do not depend on any files you did not
  760.   supply and do not depend on your files being in a certain directory. This
  761.   is why you should use headpath and the DOS command assign.
  762. - To make swapping easier, you should place the headpath-command at the
  763.   beginning of your headfile. If you need some assigns, please place the
  764.   correct doscall-commands directly after the headpath-command.
  765.  
  766. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  767.  
  768. Excuses :
  769. Yes, I know that some of Haktar's characteristics are not well liked by all
  770. people. Here is a list of them and the reasons why I did it this way :
  771. - It is too complicated to make a whole file for each item. When making
  772.   changes, you have to load and save a lot to update all files.
  773.   I do not think so; most of the changes are made within one item.
  774.   Changing that would change the whole concept of Hakter.
  775.   And it would result in a chaotic structure of the adventures.
  776.   Haktar would need extra memory and huge amounts of time.
  777.   You would not be able to find a specific item at once.
  778.   And there are the multi/thing commands for the hard core of that type.
  779.   So : When you are done with your adventure, please kill the multi files
  780.   (by calling HakCheck ... SPLIT).
  781. - I want to have a parser, the multiple-choice principle is stupid !
  782.   Yes, I agree with you, but I don't think that there is a way to program
  783.   a parser-orientated adventure interpreter.
  784.   And some people actually like this way of doing it (Hi HCF !).
  785. - There is a small memory loss when calling simpleface!
  786.   Yes, but that is my way of killing lamers: Cool freaks with 8MBytes do
  787.   not notice such small losses, but all these A500-lamers will be killed
  788.   by the 500 Bytes that dissapear.
  789.   No, I just can't find that bug. If you can help me here, then do it!
  790.  
  791. Features of later versions (I hope...) :
  792. - complex calculations, terms with variables
  793. - keep special files in memory (as a command)
  794. - IFF grafix even for selected gadgets
  795. - an ask-like IfTheUserSaysThatItIsOKThen command
  796. - some simple battle functions to implement aspects of role-playing (as RAT
  797.   would express it) or hack'n'slay (that's my name for it) fights
  798.  
  799. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  800.  
  801. HakCheck :
  802. HakCheck is a little tool for Haktar.
  803. It reads an adventure and creates some lists :
  804. 1. Used rooms/items.
  805.    You can read through this list to find unused rooms.
  806. 2. References to rooms or items that do not exist on disk.
  807.    You have forgotten to create these files or you spelled them wrong.
  808. 3. Used flags.
  809.    Check these to eleminate flags that you spelled wrong.
  810. 4. Used vars.
  811.    Same as flags...
  812. 5. Bad var references.
  813.    List of variables you used before initializing them.
  814. If you own a printer, it is very wise to print these lists to prevent
  815. several items to be given the same name or vice versa.
  816. It also displays the number of files and the average and total length.
  817. I am planning to check even more errors, mostly syntax errors, but that will
  818. have to wait.
  819. When HakCheck finds a syntax error, it will display the file and the line it
  820. is in. That service is very generously, and is not included in any other list,
  821. so look into your manual and learn to work with the search command.
  822.  
  823. Starting HakCheck :
  824. Type 'HakCheck <headfile>' in the CLI.
  825. I don't think that I will include WBench start.
  826.  
  827. HakCheck can also be used to make adventure files unreadable. You will still
  828. be able to play these, but the files will be coded.
  829. The CLI call for this feature looks like this :
  830. HakCheck <headfile> CODE <code>
  831. <code> is a 4 letter word.
  832. You can decode the adventure (if you know the code) again :
  833. HakCheck <headfile> DECODE <code>
  834.  
  835. Adventures that consist of huge multi/thing files become very slow.
  836. You should split these into small files. This can be done with HakCheck :
  837. HakCheck <headfile> SPLIT
  838. Whenever HakCheck finds a thing command, it creates a new file with the name
  839. and contents of the thing command. After that you will have to delete all
  840. multi commands in the headfile. The files that contained the thing commands
  841. will be useless now, so you can delete them, too.
  842.  
  843. When checking long adventures, the lists will get very long. To prevent all
  844. unimportant output (as lists and the what-are-you-doing-infos), use this :
  845. HakCheck <headfile> QUIET
  846.  
  847. And do not mix the options in a single call !
  848.  
  849. NOTE:
  850.   HakCheck needs lots of stack for long and complex adventures. If a wise man
  851.   from india appears while HakCheck is running, then the most likely reason
  852.   is that your stack was too small. Please try again with a bigger stack.
  853.   If you have any idea of how to prevent this, please inform me.
  854.  
  855.  
  856. Other tools for Haktar:
  857. =======================
  858. Yes, there tools for Haktar that have not been written by me.
  859. Of these I know the following:
  860. HakCrunch by Eric Hambuch transforms all Haktar-commands into shortcuts.
  861. HakFormat by Eric Hambuch formats the structure of adventures.
  862.  
  863. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  864.  
  865. Bugs :
  866. HakCheck seems to have problems with counting the lines, so do not rely on
  867. the number it prints. Check the previous and next line, too.
  868. I do not know why, but I just found out that HakCheck has problems with
  869. spaces after commands.
  870. And Haktar does not like to be started from the WorkBench directly, so I
  871. still have to use IconX, but it already reads the wbargs. If you know why
  872. Haktar goes bananas when being clicked (You can't even click the adventures
  873. directly !), PLEASE write to me !
  874. I have tested my ShowPic with every ILBM file I found on my discs. And this
  875. is the result : It is perfect, BUT :
  876.   DPaint III seems to ignore some rules. It does not set the HBRIGHT flag in
  877.   the CAMG chunk. And the brushes are different (unshowable), too.
  878. I just tested Haktar on memory losses. Result : OK. But somehow I gained some
  879. bytes by calling it. That is not too bad...
  880. Remember to set the stack correctly. HakCheck is rather complex and will
  881. need lots of stack when checking large adventures.
  882.  
  883. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  884.  
  885. Your Rights, My Rights :
  886. - You may write adventures with Haktar and you have all rights on the text
  887.   files you wrote, but I beg you to declare your adventures as PD.
  888. - It would be nice of you to send your good adventures to me, I will try to
  889.   send back the disk with some new adventures on it. If you do this, please
  890.   include a note if I may spread the adventure on PD.
  891. - When spreading your own adventures, please note that Haktar may not be
  892.   sold on any other discs except the series that is mentioned when starting
  893.   Haktar.
  894.  
  895. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  896.  
  897. Thanx'n'Greetungs'n'da whole stuff :
  898. - Guido Wegener : Thanks for being me. He/I wrote the whole thing.
  899. - Hans Christian Freankel : Thanks for testing, Powerplays and lots of
  900.   Game Boy matches (lots of them are still to come).
  901. - Eric Hambuch : Thanx for bug reports, tools, tips & ideas!
  902. - André Wichmann : Thanks for testing/ideas and your fast text tool.
  903.   Special thanks for trying to deliver your FileSelect.
  904. - Robert Heselmann : Thanks for testing/writing and the cheap Game Boy.
  905. - Martin Rosenkranz : No thanx for not testing and not writing. And what
  906.   does "I won't use >YOUR< (fucking) language !" mean ? You want to get old
  907.   with that attitude ? Grow up, Cogan.
  908. - Commodore : Thanks for AMIGA 500, 1MB, A590, 1084S
  909. - SWF3 : cool radio broadcasts (I could think of better ones, but...)
  910. - Addison Wesley : Thanks for the Manuals, they made it all possible.
  911. - Manx : Aztec C 5.0 is GREAT !
  912. - School, sickness, relations, drinks, glass, games, TV :
  913.   Thanks for disturbing my programming-sessions.
  914. - Kronsteiner, Schrader : That's what I need. The softest soft-drinks !
  915. - Lovecraft : inspiration
  916. - E.A.Poe : relaxation
  917. - Competition Pro : For real fun with real games.
  918.   I tuned my transparent stick by replacing the metal stick by one of my old
  919.   knobs. Now it works like hell and it has a rugh knob !
  920. - Benji (my dog) : Thanks for fresh air and keeping me up all night.
  921.   (That's over since the little operation. =ß-)
  922. - Lutz Grandrath, Philipp Witkop : Hi !   (friendly... °º°)
  923. - Martin Mohr : Hi, thanx for not killing Tower of Babel !
  924. - Martin Baumann : Phone me !
  925. - All the ST-idiots around : You will not be able to read this !
  926. - Nintendo : A big THANK YOU for the Game Boy !
  927. - The Acient City Healthy Ball Factory of Baoding : Qigong balls for
  928.   compiling time...
  929. - Edward Bulwer-Lytton : "Zanoni" is good.
  930.  
  931. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  932.  
  933. Send errors, corrections, supporting ideas, criticism, enthusiastic fan-
  934. letters and money to the author:       Guido Wegener
  935.                                        Eisenacher Str. 2
  936.                                        5300 Bonn 1
  937.                                        West Germany
  938.  
  939.